package main

import "fmt"

func main() {
	// 定义切片
	var identifier []int
	fmt.Println(identifier)
	var slice1 []int = make([]int, 8)
	fmt.Println(slice1)
	slice2 := make([]int, 8)
	fmt.Println(slice2)
	// 指定容量
	slice3 := make([]int, 8, 30)
	fmt.Println(slice3)
	// 切片初始化
	s := []int{1, 3, 23}
	fmt.Println(s)
	fmt.Println(s[:2])
	// len和cap函数
	fmt.Println(len(s))
	fmt.Println(cap(s))
	// 空nil切片
	var nils []int
	if nils == nil {
		fmt.Println("这个切片是空的")
	}
	fmt.Println(nils)
	// 切片截取
	s2 := s[1:]
	fmt.Println(s2)
	// append和copy函数
	slice4 := make([]int, 2, 2)
	slice4 = append(slice4, 2)
	// 同时追加多个元素
	slice4 = append(slice4, 8, 213, 123, 123)
	fmt.Println(slice4)
	// 创建一个两倍容量的切片
	numbers := make([]int, len(slice4)*2, cap(slice4)*2)
	numbers[7] = 1
	fmt.Println(numbers)
	// 拷贝切片
	copy(numbers, slice4)
	fmt.Println(slice4)
	fmt.Println(numbers)
}
